import { i18n } from '@/common/utils';
import { SelectionPickField2 } from '@/components/FieldTemplate/SelectionPickField2';
import { RJSFSchema, UiSchema } from '@rjsf/utils';
import { CollapseTemplate } from 'nextcae-base';

export const schema: RJSFSchema = {
  type: 'object',
  properties: {
    Selection: {
      type: 'object',
      title: '选择',
      properties: {
        Source: {
          title: '源',
          type: 'array',
          maxItems: 3,
          ...{
            'x-options': ['face'],
          },
        },
        Target: {
          title: '目标',
          type: 'array',
          maxItems: 1,
          ...{
            'x-options': ['face'],
          },
        },
        Domain: {
          title: '扫掠体',
          type: 'array',
          maxItems: 1,
          ...{
            'x-options': ['solid'],
          },
        },
      },
    },
    MeshSize: {
      type: 'object',
      title: '剖分尺寸',
      properties: {
        Size: {
          type: 'number',
          title: i18n.t('Size'),
          exclusiveMinimum: 0,
        },
        // Number: {
        //   type: 'number',
        //   title: i18n.t('Number'),
        //   exclusiveMinimum: 0,
        // },
        // NumberOrSize: {
        //   type: 'string',
        //   title: '剖分方式',
        //   default: 'quantity',
        //   oneOf: [
        //     {
        //       const: 'quantity',
        //       title: '数量',
        //     },
        //     {
        //       const: 'size',
        //       title: '尺寸',
        //     },
        //   ],
        // },
        // Method: {
        //   type: 'string',
        //   title: i18n.t('Method'),
        //   oneOf: [
        //     {
        //       const: 'BySize',
        //       title: i18n.t('BySize'),
        //     },
        //     {
        //       const: 'ByNumber',
        //       title: i18n.t('ByNumber'),
        //     },
        //   ],
        //   default: 'BySize',
        // },
      },
      allOf: [
        {
          if: {
            properties: {
              NumberOrSize: {
                const: 'quantity',
              },
            },
          },
          then: {
            properties: {
              Number: {
                type: 'integer',
                title: i18n.t('Number'),
                minimum: 1,
                maximum: 1e7,
              },
            },
            required: ['Number'],
          },
        },
        {
          if: {
            properties: {
              NumberOrSize: {
                const: 'size',
              },
            },
          },
          then: {
            properties: {
              Size: {
                type: 'number',
                title: i18n.t('Size'),
                exclusiveMinimum: 0,
              },
            },
            required: ['Size'],
          },
        },
      ],
      // allOf: [
      //   // Method==BySize ，显示Size
      //   {
      //     if: {
      //       properties: {
      //         Method: {
      //           const: 'BySize',
      //         },
      //       },
      //     },
      //     then: {
      //       properties: {
      //         Size: {
      //           type: 'number',
      //           title: i18n.t('Size'),
      //           exclusiveMinimum: 0,
      //         },
      //       },
      //       required: ['Size'],
      //     },
      //   },
      //   // Method==ByNumber，显示Number
      //   {
      //     if: {
      //       properties: {
      //         Method: {
      //           const: 'ByNumber',
      //         },
      //       },
      //     },
      //     then: {
      //       properties: {
      //         Number: {
      //           type: 'integer',
      //           title: i18n.t('Number'),
      //           minimum: 1,
      //           maximum: 1e7,
      //         },
      //       },
      //       required: ['Number'],
      //     },
      //   },
      // ],
    },
    AddTo: {
      type: 'object',
      title: i18n.t('添加到'),
      properties: {
        Property: {
          title: i18n.t('属性'),
          type: 'number',
          ...{
            JsonPath: 'FE Structure.PROPERTY',
            hasAdd: true,
            hasDefault: true,
            args: { type: 'property', c: 'property.new' },
            params: { pType: 'shell', color: 0x856805, type: 0 },
          },
        },
        Part: {
          title: i18n.t('部件'),
          type: 'number',
          ...{
            JsonPath: 'Part.PART',
            hasAdd: true,
            hasDefault: true,
            args: { c: 'part.new' },
            params: { type: 'part' },
          },
        },
      },
    },
  },
};

export const uiSchema: UiSchema = {
  Selection: {
    'ui:FieldTemplate': CollapseTemplate,
    'ui:layout': [1, 2],
    'ui:options': {
      label: false, // 不显示 label
    },
    Source: {
      'ui:field': SelectionPickField2,
      'ui:focused': true, // 聚焦字段，会自动聚焦到该字段
    },
    Target: {
      'ui:field': SelectionPickField2,
    },
    Domain: {
      'ui:field': SelectionPickField2,
    },
  },
  MeshSize: {
    'ui:FieldTemplate': CollapseTemplate,
    'ui:layout': [1, 2],
    'ui:options': {
      label: false, // 不显示 label
    },
    Method: {
      'ui:field': 'selectionField',
    },
    NumberOrSize: {
      'ui:widget': 'radio',
    },
    Size: {
      'ui:field': 'inputField',
    },
    Number: {
      'ui:field': 'inputField',
    },
  },
  AddTo: {
    'ui:FieldTemplate': CollapseTemplate,
    'ui:layout': [1, 2],
    'ui:options': {
      label: false, // 不显示 label
    },
    Property: {
      'ui:field': 'partMaterialField',
    },
    Part: {
      'ui:field': 'partMaterialField',
    },
  },
};
